﻿using System;
using DATA.Base;
using NHibernate.Mapping;
using System.Collections.Generic;
using DATA.BusinessObjects;
using DATA.ManagerObjects;
using DATA.UnitTests;
using NHibernate;

namespace BUS
{
    public class LoaiPhongBUS
    {
        #region Lên - Lấy danh sách loại phòng
        public static IList<Loaiphong> LayDanhSachLoaiPhong()
        {
            IList<Loaiphong> lstLoaiPhong = null;
            try
            {
                IManagerFactory iMF = new ManagerFactory();
                ILoaiphongManager iLoaiPhong = iMF.GetLoaiphongManager();
                lstLoaiPhong = iLoaiPhong.GetAll();
            }
            catch (Exception ex)
            {
                throw new Exception("Lỗi, lấy danh sách loại phòng null", ex);
            }
            return lstLoaiPhong;
        }
        #endregion

        #region Lên - Lấy Loại Phòng dựa vào mã loại phòng
        public static Loaiphong LayLoaiPhongTheoMaLoaiPhong(string maLoaiPhong)
        {
            Loaiphong loaiPhong = null;
            try
            {
                IManagerFactory iMF = new ManagerFactory();
                ILoaiphongManager iLoaiPhong = iMF.GetLoaiphongManager();
                loaiPhong = iLoaiPhong.GetById(maLoaiPhong);
            }
            catch (Exception ex)
            {
                throw new Exception("Lỗi, không lấy được loại phòng", ex);
            }
            return loaiPhong;
        }
        #endregion

        #region Bình - Cập nhật loại phòng
        public static Boolean CapNhatLoaiPhong(Loaiphong lp)
        {
            Boolean flag = false;
            ISession isession = NHibernateSessionManager.Instance.Session.GetISession();
            ITransaction iTrans = null;
            try
            {
                iTrans = isession.BeginTransaction();
                isession.Update(lp);
                iTrans.Commit();
                flag = true;
            }
            catch (Exception ex)
            {
                iTrans.Rollback();
                throw new Exception("Lỗi, không cập nhật được loại phòng", ex);
            }
            return flag;
        }
        #endregion

        #region Bình - Thêm loại phòng
        public static Boolean ThemLoaiPhong(Loaiphong lp)
        {
            Boolean flag = false;
            ISession isession = NHibernateSessionManager.Instance.Session.GetISession();
            ITransaction iTrans = null;
            try
            {
                iTrans = isession.BeginTransaction();
                isession.Save(lp);
                iTrans.Commit();
                flag = true;
            }
            catch (Exception ex)
            {
                iTrans.Rollback();
                throw new Exception("Lỗi, không thêm được loại phòng", ex);
            }

            return flag;
        }
        #endregion
    }
}
